package com.zsummer.demo.rabbitmq.routing;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.MessageProperties;
import com.zsummer.demo.rabbitmq.common.util.RabbitmqUtils;

/**
 * @author zsummer
 * @since 2021/12/9
 * 路由模式：消息根据路由键进行投递
 */
public class Producer {

    public static void main(String[] args) throws Exception{

        // 获取连接
        Connection connection = RabbitmqUtils.getConnection();
        // 获取通道
        Channel channel = connection.createChannel();
        /**
         * 声明交换机
         * 参数一：交换机名称
         * 参数二：交换机类型：支持fanout通知，direct路由， topic动态路由，等
         */
        channel.exchangeDeclare("direct-ex", "direct", true);
        /**
         * 发布消息
         * 参数1：交换机
         * 参数2：路由键
         * 参数3：消息属性 MessageProperties.PERSISTENT_TEXT_PLAIN 使消息进行持久化
         * 参数4：消息
         */
        channel.basicPublish("direct-ex", "com.demo.direct", MessageProperties.PERSISTENT_TEXT_PLAIN, "hello".getBytes());
        // 关闭连接和通道
        RabbitmqUtils.close(connection, channel);

    }
}
